home *** CD-ROM | disk | FTP | other *** search
/ Atari Forever 4 / Atari Forever 4.zip / Atari Forever 4.iso / SERIE_AI / AI_063 / EMU_ZX81.ZIP / ZX81.TXT < prev   
Text File  |  1993-06-18  |  40KB  |  656 lines

  1. Sinclair ZX81 Emulator V2.1
  2. ===========================
  3.  
  4.  
  5. Vorgeschichte
  6. ~~~~~~~~~~~~~ 
  7. Es war einmal... damals...  genauer  gesagt achtzig/einenachtzig... in den An-
  8. tennen... als wir noch  schwarz/weiß sahen... und als wir noch  jung und schön
  9. waren... damals... als alles begann...
  10.  
  11. ... also damals, da gab es eigentlich noch keine Handbücher und README-Dateien
  12. und ich hätte niemals auch nur  einen Gedanken daran verschwendet, so eine An-
  13. leitung zu tippen.  "Press any key to start"  reichte da noch völlig aus. Aber
  14. heutzutage geht es wohl doch nicht mehr ohne. Also noch einmal von vorne...
  15.  
  16. Wie gesagt, es begann  damals, im Jahre 1980. Schon zu  dieser Zeit hatten ei-
  17. nige Leute  bemerkt, daß die Mikroprozessoren  der Firma Intel  nichts taugen,
  18. eine neue Firma  namens ZILOG gegründet und einen  neuen Mikroprozessor namens
  19. "Z80" entworfen. Der Name Z80 kommt  allerdings nicht daher, daß dies im Jahre
  20. 1980 passiert war, denn da war der  Z80 schon vier Jahre alt, sondern weil der
  21. Z80 eine Verbesserung des Mikroprozessors 8080  war und außerdem von ZILOG. Im
  22. Jahr 1980 kam dann ein spleeniger Engländer  auf die Idee, daß der Z80 an sich
  23. eigentlich auch nicht so das Gelbe vom Ei wäre, und fügte 1 kByte RAM, 4 kByte
  24. ROM, einen  Modulator zum  Anschluß eines  Fernsehers und  eine Folientastatur
  25. hinzu. Einzig im Namengeben war dieser  Engländer nicht so erfindungsreich, er
  26. nannte das  fertige Gerät einfach "ZX80",  was wohl soviel wie  "Z80, extended
  27. version" bedeuten sollte. Aber Clive Sinclair, so der Name des ZX80-Erfinders,
  28. wäre nicht  Clive Sinclair gewesen,  wenn er den  ZX80 nicht noch  kleiner und
  29. billiger gemacht hätte. Er  packte alles, was der ZX80 außer  Z80, RAM und ROM
  30. noch brauchte, in ein  einziges IC, so daß der fertige  Computer nur noch vier
  31. ICs in seinem  Inneren hatte. Aus den 4  kByte ROM wurden 8 kByte  ROM, in die
  32. Sinclair mit  Hilfe einiger  englischer Mathematiker das  ganze Betriebssystem
  33. und ein  brauchbares BASIC  stopfte. Das  fertige Gerät  bekam dann  den Namen
  34. "ZX81", weil inzwischen  schon ein Jahr vergangen war und  Sinclair immer noch
  35. nicht einfallsreicher im Namengeben geworden war.
  36.  
  37. Warum ich  diese Geschichte  erzähle? Nun,  eben diesen  Computer namens  ZX81
  38. bildet das beiliegende Programm ZX81.PRG auf  dem Atari ST softwaremäßig nach.
  39. Die Geschichte  des Atari ST erzähle  ich allerdings hier nicht,  das kann mal
  40. jemand machen, der einen Atari-Emulator schreibt.  Ein Programm, das einen an-
  41. deren Computer  nachbildet, nennt  man auch einen  "Emulator". Somit  wäre ge-
  42. klärt, was ein "Sinclair ZX81 Emulator" ist. "V2.1" bedeutet "Version 2.1" und
  43. das wiederum bedeutet, daß der Autor  nach der ersten Version immer noch nicht
  44. genug hatte und das Programm weiter perfektioniert hat. Verrückter Kerl.
  45.  
  46. Nun eine andere Frage. Warum überhaupt  ein ZX81-Emulator? Nunja, was soll ich
  47. sagen? Diejenigen,  die den ZX81 kennen,  wissen warum, und die  anderen haben
  48. mit Sicherheit nicht bis hierhin gelesen.
  49.  
  50. Der ZX81 ist  einfach eine Legende. Für einen Computerfreak  bedeutet der ZX81
  51. vielleicht das, was die Tin Lizzy für einen alten Auto-Liebhaber bedeutet. Als
  52. mein Bruder und ich  ihn 1981 zu Weihnachten geschenkt bekamen,  habe ich mich
  53. sofort in das kleine schwarze Kästchen  verliebt. Zum Leidwesen meiner Freunde
  54. und Verwandten  saß ich Tage  und Nächte  davor, auf Omas  alten Schwarz/Weiß-
  55. Fernseher starrend, auf dem meistens flimmernde schwarz/weiße Streifen hin und
  56. her huschten,  die nur  ab und  an von  einer aussagekräftigen  Mitteilung wie
  57. "E/0" unterbrochen  wurden. Als  dann das  Buch  "Programmierung des Z80"  von
  58. Rodnay Zaks dazukam, war  meine Begeisterung für den ZX81 nicht  mehr zu brem-
  59. sen. Ein Freund von  mir war genauso angetan davon und  wir machten als Schul-
  60. kinder sogar einen kleinen Handel  mit selbstgeschriebenen Programmen auf. Wir
  61. hörten aber  schnell wieder damit  auf, als wir  gemerkt hatten, wie  groß die
  62. Nachfrage war  und wieviel Arbeit  da auf uns  zu kam. Schließlich  hatten wir
  63. sowieso keine Zeit, das  verdiente Geld auszugeben, weil wir ja  immer vor dem
  64. "blöden Ding"  saßen, wie  unsere Eltern  den ZX81 nannten.  Denn auch  an der
  65. Hardware gab es damals viel zu Basteln.
  66.  
  67. Vielleicht  ist an  dieser  Stelle auch  eine  kleine  Anekdote über  besagten
  68. Schulfreund angebracht, ich hoffe er wird  es mir verzeihen. Damals hatten wir
  69. nämlich noch keinen Assembler und mußten uns die Codes mühsam aus Rodnay Zaks'
  70. Buch zusammensuchen und dann  in den ZX81 "poken". Er hatte  es geschafft, ein
  71. mehrere Seiten langes, kompliziertes  Assembler-Programm während einiger lang-
  72. weiliger Schulstunden  zu schreiben.  Was mich dann  aber doch  verblüfft hat,
  73. war, daß schon alle Maschinensprache-Codes fertig daneben standen. Er muß fast
  74. alle Z80-Opcodes  auswendig gekonnt haben. Und  das dezimal - die  Vorzüge des
  75. Hexadezimalsystems hatte  er damals wohl  noch nicht eingesehen.  Das Programm
  76. ist übrigens heute noch erhalten, es ist das "3D_LABYR.81".
  77.  
  78. Später habe ich dann doch einen  Assembler geschrieben, der ebenfalls noch er-
  79. halten ist, nämlich  "ASSEMBLE.81". Aber auch der mußte  natürlich erst einmal
  80. per Hand in Maschinencode übersetzt werden.
  81.  
  82. Die ganze  ZX81-Herrlichkeit hielt allerdings nur  zwei oder drei  Jahre. Dann
  83. kam endlich Ton und  Farbe ins Spiel. Von Commodore war  nämlich der "C64" er-
  84. schienen, den man,  um beim Vergleich mit  Autos zu bleiben, als  eine Art "VW
  85. Käfer" ansehen kann. Aber  auch Clive Sinclair war nicht faul  und brachte den
  86. "ZX Spectrum"  auf den Markt. Irgendwie  hatte er das mit  dem Namengeben auch
  87. inzwischen gelernt.  Der "Speccy"  war zwar  in mancher  Hinsicht der  bessere
  88. Computer, aber der "64er" war wegen seines Soundchips, der vielen kursierenden
  89. Programme und  der Aussicht, einmal einen  anderen Mikroprozessor als  den Z80
  90. malträtieren zu können,  noch etwas verlockender. So investierten  wir das mit
  91. dem Software-Handel verdiente Geld in einen Commodore 64.
  92.  
  93. Wieder drei  Jahre später  erschien dann  der Atari ST.  Die Farbe  war wieder
  94. verschwunden und  nun stand auf  dem Tisch  statt des Fernsehers  ein seriöser
  95. Monochrom-Monitor. Und irgendwie keimte da in mir die Idee auf, den alten ZX81
  96. wiederzubeleben. Als dann noch ein CP/M-Emulator  für den Atari ST auftauchte,
  97. wurde mir klar, daß  es möglich war, den ZX81 originalgetreu  auf dem Atari ST
  98. nachzubilden. Das hat mir dann natürlich  keine Ruhe mehr gelassen. Nach einer
  99. Woche und einigen neugierigen Blicken in besagten CP/M-Emulator krabbelten die
  100. ersten ZX81-Zeichen  über den  Atari-Monitor. Aber  die Bildschirmausgabe  des
  101. ZX81 ohne Videochip war  eine harte Nuß, und so dauerte  es nochmal eine ganze
  102. Weile, bis ein plötzlich auftauchendes ZX81-ROM-Listing sowie ein Gespräch mit
  103. einem ehemaligen  ZX81-Hardware-Experten Licht  in diese  wirklich genial-ver-
  104. zwickt-sparsame Angelegenheit  brachten. Schließlich  war die Version  1.0 des
  105. ZX81-Emulators fertig. Leider erlaubte aber die  Firma Amstrad nicht, das Pro-
  106. gramm irgendwo  zu veröffentlichen. Zwei Jahre  später, nachdem der  ZX81 auch
  107. von Amstrad  nicht mehr verkauft wurde,  konnte das Programm dann  leicht ver-
  108. bessert als Version 1.1 in der Zeitschrift "TOS" erscheinen.
  109.  
  110. Ich hatte nicht damit gerechnet, daraufhin  soviel "Fan-Post" zu bekommen. Al-
  111. len Schreibern an dieser Stelle herzlichen Dank. Im Laufe der Zeit hatten sich
  112. einige  sinnvolle  Verbesserungsvorschläge  angesammelt,   außerdem  lief  der
  113. ZX81-Emulator auf  schnelleren als  den Standard-68000-8MHz-Ataris  einfach zu
  114. schnell. Als  ich dann auf  den Atari TT umgestiegen  bin, war klar:  Es mußte
  115. einfach  noch eine  Version des  ZX81-Emulators geben,  die auch  mit dem  19-
  116. Zoll-Monitor zurechtkommt. Nur so  konnte das Original-ZX81-Feeling wie damals
  117. auf Omas  altem Schwarz/Weiß-Fernseher  wiederhergestellt werden. Hier  ist es
  118. also wieder!
  119.  
  120.  
  121. Neuerungen ab der Version 2.0
  122. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
  123. Für diejenigen, die  schon Version 1.0 oder 1.1 des  ZX81-Emulators kennen und
  124. nur wissen wollen, was  sich ab der Version 2.0 geändert  hat, hier eine Liste
  125. der wesentlichen Neuerungen:
  126.  
  127.  - Neben der mittleren und hohen ST-Auflösung wird jetzt auch die mittlere und
  128.    hohe TT-Auflösung unterstützt.
  129.  - Die Geschwindigkeit  des ZX81  ist  nun  für den  SLOW- und  den FAST-Modus
  130.    getrennt einstellbar.
  131.  - Das Dunkeltasten des Bildschirms im FAST-Modus kann abgeschaltet werden.
  132.  - Der Nummerntasten-Block kann als Hex-Eingabefeld benutzt werden.
  133.  - Speicherblöcke im ZX81 können auf Diskette geladen und gespeichert werden.
  134.  - Sämtliche Parameter lassen sich in ZX81-Programmen speichern  und aus ihnen
  135.    laden, so daß Programme stets mit den passenden Parametern verknüpft sind.
  136.  - Bei jedem  ZX81-Reset können  automatisch die Parameter  und ein beliebiger
  137.    Speicherblock in den ZX81 geladen werden.
  138.  - Die Alternate-Taste  hat nun  eine andere  Funktion bekommen:  Sie schaltet
  139.    nicht mehr  auf die Tasten-Belegung mit Shift des Atari um, sondern auf die
  140.    normale Tasten-Belegung  des Atari.  Tasten, die  man beim  Atari mit Shift
  141.    erhält,  müssen  nun  mit  Shift-Alternate  angesprochen  werden.  Mit  der
  142.    CapsLock-Taste kann der Atari-Tasten-Modus jetzt festgeklemmt werden.
  143.  - Die Funktionstasten entsprechen jetzt der obersten Zeile der ZX-Tastatur.
  144.  - Man kann  nun im  ZX81 beliebige Dateinamen eingeben,  auch mit Pfadangaben
  145.    und Wildcards. Der normale Schrägstrich "/" wird dabei in den Backslash "\"
  146.    umgewandelt. Dadurch lassen sich beliebige Dateien auch ohne den Umweg über
  147.    die Datei-Auswahlbox erreichen.
  148.  - Nun sind auch ".", SPACE, SHIFT und NEW LINE als Joystick-Tasten benutzbar.
  149.    Man gebe "^" oder "~" für SHIFT und "\" oder "|" für NEW LINE ein.
  150.  
  151. In der Version 2.1 mußten nochmal einige Kleinigkeiten verbessert werden, z.B.
  152. gab es in  den Farbmodi von STEs  und TTs einen leichten  Grauschleier und das
  153. Dunkeltasten konnte nicht  abgeschaltet werden. Ab Version 2.1  sollte es auch
  154. unter Multi-TOS keine  Probleme mehr geben. Multitasking ist  aber leider "aus
  155. technischen Gründen" trotzdem nicht machbar.
  156.  
  157. Die ZX81-Programmsammlung  konnte dank Andreas Steinbacher  nochmal wesentlich
  158. erweitert werden. Es ist schon erstaunlich, wieviele Pacmans, Scrambles, Crazy
  159. Kongs und Froggers damals programmiert worden sind.
  160.  
  161.  
  162. Bedienung des ZX81-Emulators
  163. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
  164. Wie gesagt,  dieses Programm emuliert Sinclairs  legendären 8-Bit-Homecomputer
  165. ZX81 auf dem  Atari ST. Es wird keine  weitere Hardwareunterstützung benötigt,
  166. und trotzdem wird fast alles originalgetreu emuliert.
  167.  
  168. Darunter fällt auch die Tastatur. Da der ZX81 keinen Tastaturpuffer hatte (wer
  169. die Tastatur kennt, weiß auch warum),  ist etwas Geduld bei der Eingabe erfor-
  170. derlich. Die Tastaturbelegung entspricht  ebenfalls dem Original. Das bedeutet
  171. insbesondere, daß  die Tasten  Y und  Z gegenüber  der deutschen  Tastatur des
  172. Atari vertauscht  sind und die  meisten Sonderzeichen woanders  liegen. Dieses
  173. Problem wird aber dadurch gemildert, daß erstens über die Help-Taste jederzeit
  174. die Tastaturbelegung  des ZX81  angezeigt werden  kann, und  man zweitens  die
  175. Möglichkeit hat, durch gleichzeitiges  Drücken der Alternate-Taste die normale
  176. Tastatur-Belegung des  Atari zu  benutzen. Diesen Atari-Tasten-Modus  kann man
  177. mit der CapsLock-Taste auch festklemmen. Da  der ZX81 sowieso nur Großbuchsta-
  178. ben kennt, ist die CapsLock-Taste im ZX81 für diesen Zweck frei.
  179.  
  180. Einige Zeichen auf der Atari-Tastatur kennt der ZX81 nicht. Grundsätzlich gibt
  181. es wie gesagt nur Großbuchstaben.  Kleinbuchstaben, Umlaute und Buchstaben mit
  182. Akzenten werden durch den jeweiligen  großen Grundbuchstaben ersetzt. Die wei-
  183. teren Ersetzungen sind in der folgenden Tabelle aufgeschlüsselt:
  184.  
  185.             Atari ST        ZX81
  186.             --------------------------------
  187.             \               /
  188.             ^               **
  189.             ' und `         "
  190.             [ und ]         < und >
  191.             { und }         ( und )
  192.             # und +         £
  193.             @               C (AT)
  194.             ! und ~         N (NOT)
  195.             &               SHIFT 2 (AND)
  196.             |               SHIFT W (OR)
  197.  
  198.             Shift           SHIFT
  199.             Control         FUNCTION
  200.             Insert          GRAPHICS
  201.             Delete          RUBOUT
  202.             Backspace       RUBOUT
  203.             Esc, Tab        EDIT
  204.             Leertaste       SPACE
  205.             Return          NEW LINE
  206.             Clr Home        V (CLS)
  207.  
  208. Neben dem Anzeigen der Tastaturbelegung mit der Help-Taste steht jederzeit ein
  209. anderes Hilfsmittel über  die Undo-Taste zur Verfügung,  nämlich die Emulator-
  210. Kontrollbox. Zu den Einstellungen in dieser Dialogbox im Einzelnen:
  211.  
  212. Neben dem Symbol "Power Pack" kann man dem Speicherausbau wählen. Standard war
  213. hier wohl eine 16-kByte-Erweiterung. Nach  einem Wechsel der Speichergröße ist
  214. ein Reset erforderlich. Der Ausbau auf 48 kByte ist allerdings mit Vorsicht zu
  215. genießen. Hier wird einfach  RAMTOP auf das Ende des 64  kByte Adressraums ge-
  216. setzt, erhält  also den Wert 0.  Abgesehen davon, daß der  ZX81 hier natürlich
  217. einen positiven Wert erwartet, kann in den oberen 32 kByte eigentlich auch von
  218. der ZX81-Hardware kein RAM adressiert werden.
  219.  
  220. Naben dem  Joystick-Symbol kann man  den 4  Richtungen und dem  Feuerknopf des
  221. Joysticks in Port 2 jeweils eine  Taste des ZX81 zuordnen. Als Joystick-Tasten
  222. sind alle 40 Grund-Tasten des ZX81  zugelassen, also "0" bis "9", "A" bis "Z",
  223. ".", " " für SPACE, "^" oder "~" für SHIFT und "\" oder "|" für NEW LINE.
  224.  
  225. Mit den Knöpfen neben  dem Symbol "Keypad" kann man die  Belegung des Nummern-
  226. tasten-Blocks wählen,  "Num" steht  für die  Standard-Belegung mit  Zahlen und
  227. Rechensymbolen, bei  "Hex" werden statt  der Rechensymbole die  Buchstaben "A"
  228. bis "F" zur  Eingabe von Hexadezimalwerten verwendet und bei  "Cur" werden die
  229. Tasten 2, 4, 6  und 8 als Cursortasten verwendet. Diese  Belegung des Nummern-
  230. tasten-Blocks gilt  natürlich nur für den  ZX81-Tasten-Modus, im Atari-Tasten-
  231. Modus mit Alternate oder CapsLock gilt die Standardbelegung.
  232.  
  233. Darunter befindet sich ein Knopf, der mit "Black out" beschriftet ist. Hiermit
  234. kann man wählen, ob  im FAST-Modus des ZX81 der Bildschirm  wie beim Original,
  235. während der Computer arbeitet, dunkelgeschaltet werden soll oder ob er einfach
  236. stehen bleiben soll. Das nervige Geblinke entfällt dann.
  237.  
  238. Rechts daneben befinden sich zwei "Regler",  die mit SLOW und FAST beschriftet
  239. sind. Damit  läßt sich die Geschwindigkeit  des ZX81 im SLOW-  bzw. FAST-Modus
  240. einstellen. Die  Regler sollten normalerweise ganz  oben stehen, dann  ist die
  241. Emulation  "so schnell es geht". Bei einem  Standard-68000-8MHz-Atari ist dann
  242. der SLOW-Modus  etwa gleich  schnell wie  beim Original,  während der  ZX81 im
  243. FAST-Modus dem  Atari davonläuft. Dieses unterschiedliche  Verhalten rührt da-
  244. her, daß  der ZX81 im SLOW-Modus  durch den Bildschirmaufbau, den  der Z80 zum
  245. größten Teil selbst  erledigen muß, sehr stark abgebremst wird.  Der Atari mit
  246. seiner Video-Hardware hat  hier eindeutig die besseren  Karten. Im FAST-Modus,
  247. wo es  nur auf  die Rechenleistung  der CPU ankommt,  wird hingegen  der Atari
  248. durch die Emulation  eines fremden Prozessors stark  gebremst. Bei schnelleren
  249. als  den Standard-68000-8MHz-Ataris  laufen die  ZX81-Programme im  SLOW-Modus
  250. jedoch zu schnell ab, was besonders bei Spielen fatal ist. Hier muß der Regler
  251. für den SLOW-Modus heruntergeschoben werden. Im  FAST-Modus kann das kaum pas-
  252. sieren, und  wäre auch normalerweise kein  Nachteil. Der Regler für  den FAST-
  253. Modus kann also eigentlich immer am oberen Anschlag stehen.
  254.  
  255. Rechts oben befindet sich ein "Memory Block" titulierter Kasten mit den beiden
  256. Knöpfen "Load" und "Save". Hiermit kann  man einen Speicherblock im Adressraum
  257. des ZX81 laden oder  speichern, nachdem man unter "Start ..."  und "Bytes ..."
  258. den Anfang und die Länge des Blocks eingegeben hat.
  259.  
  260. Die Knöpfe "ZX81 Break"  und "ZX81 Reset" bewirken genau  das, was draufsteht,
  261. nämlich einen Abbruch des laufenden ZX81-Programms  oder einen Reset des ZX81.
  262. Mit "Quit Emulator" kann der Emulator verlassen werden.
  263.  
  264. Mit den Knöpfen "Load Parameters"  und "Save Parameters"  können die Emulator-
  265. Einstellungen auch geladen und abgespeichert  werden. Dies geschieht immer aus
  266. oder in ein vorhandenes ZX81-Programm. Die  Programme sind so immer gleich mit
  267. den richtigen Einstellungen  verknüpft. Die Programme bleiben  auch nach Spei-
  268. chern der Parameter ZX81-kompatibel, da  die Parameter im ungenutzten Drucker-
  269. puffer in den Systemvariablen gespeichert werden.
  270.  
  271. Findet der ZX81-Emulator bei einem  Reset ein ZX81-Programm namens "ZX81.INF",
  272. so werden dessen Parameter automatisch  geladen. Findet er einen Speicherblock
  273. namens "ZX81.MEM",  so wird  auch dieser geladen.  Die Parameter  werden dabei
  274. zuerst geladen und  können so die Adresse bestimmen, an  die der Speicherblock
  275. geladen wird. Eine  denkbare Anwendung dafür ist das Laden  eines anderen Zei-
  276. chensatzes als Block von $0200 Bytes ab der Adresse $1E00 im ZX81-Speicher.
  277.  
  278.  
  279. Die Z80-Emulation
  280. ~~~~~~~~~~~~~~~~~ 
  281. Das Kernstück im ZX81-Emulator ist natürlich die Emulation des Z80-Prozessors.
  282. Damit aber  auch auf  den schon mehrfach  zitierten Standard-68000-8MHz-Ataris
  283. zumindest  im SLOW-Modus  die originale  ZX81-Geschwindigkeit erreicht  werden
  284. konnte, wurden dabei u.a. folgende Abstriche gemacht:
  285.  
  286. Der Z80-Stack wird  auf Motorola-Art behandelt. Die beiden  Bytes von Adressen
  287. werden also auf  dem Stack vertauscht abgelegt. Außerdem kommt  es dadurch auf
  288. Ataris mit 68000  zu Problemen bei einer ungeraden  Adresse des Stackpointers.
  289. H- und N-Flag  werden nicht gesetzt, insbesondere  funktioniert der Z80-Befehl
  290. "daa" dadurch  nicht korrekt.  Die Paritätsfunktion  des P/V-Flags  wird nicht
  291. emuliert. Nur  bei zwei  Z80-Befehlen wird  das Schreiben  in den  ROM-Bereich
  292. verboten, weil sich das ZX81-8K-ROM damit sonst selber löschen würde. Generell
  293. kann man sagen, daß mindestens alle  Funktionen, die vom ZX81-ROM benutzt wer-
  294. den, korrekt emuliert werden.
  295.  
  296.  
  297. Das Cassetten-Interface
  298. ~~~~~~~~~~~~~~~~~~~~~~~ 
  299. Als Tribut an  den Fortschritt der Technik wurde  das berühmt-berüchtigte Cas-
  300. setteninterface ersetzt durch die Möglichkeit, Programme von Diskette zu laden
  301. oder auf  Diskette zu speichern.  Man kann  natürlich auch eine  Harddisk oder
  302. RAM-Disk oder ein  anderes Laufwerk verwenden, auf das man  mit dem TOS-Datei-
  303. system zugreifen kann. Die  Zeiten ausgedehnter Kaffeepausen oder Waldspazier-
  304. gänge, nach  deren Ende man feststellte,  daß der Lautstärkeregler  eine Prise
  305. niedriger gedreht werden mußte,  sind damit leider unwiederbringlich verloren.
  306. Es sei denn,  man möchte seine alten ZX81-Programme  auf Diskette überspielen.
  307. Dazu mehr  unter  "Häufig gestellte Fragen". Man  lädt Programme von  Disk mit
  308. LOAD "programmname" oder  einfach mit LOAD "". Im letzten  Fall erscheint dann
  309. die Datei-Auswahl-Box.  Speichern geht genauso, nur  mit SAVE statt  LOAD. Die
  310. Programme sollten die  Endung ".81" haben. Beim Eingeben  der Programmnamen im
  311. ZX81 ist zu beachten, daß die Zeichen "?", "*", ":", "/" und "." beim Atari im
  312. Gegensatz zum ZX81  eine besondere Bedeutung haben. Die  Dateinamen dürfen bis
  313. zu 250 Zeichen  lang sein, obwohl bei den  bisher gebräuchlichen TOS-Versionen
  314. der Name  nach 8 Zeichen abgeschnitten  wird. Falls keine  andere Datei-Endung
  315. angegeben ist, wird ".81" angehängt, und falls keine Pfadangaben gemacht sind,
  316. wird der aktuelle Zugriffspfad verwendet,  mit dem der ZX81-Emulator gestartet
  317. wurde.  Beim  ZX81 werden  die  Variablen  und der  Bildschirminhalt  übrigens
  318. grundsätzlich mit abgespeichert.
  319.  
  320.  
  321. Der ZX81-Drucker
  322. ~~~~~~~~~~~~~~~~ 
  323. Der ZX81-Drucker wird  nicht emuliert. Die Befehle LPRINT und  LLIST führen zu
  324. einer entsprechenden  Fehlermeldung. Bildschirm-Hardcopys  über Alternate/Help
  325. oder COPY sind allerdings möglich.
  326.  
  327.  
  328. Kleine Kostprobe gefällig?
  329. ~~~~~~~~~~~~~~~~~~~~~~~~~~ 
  330. Wie, Sie haben  keine Lust mehr, diese Anleitung weiterzulesen  oder das ZX81-
  331. Handbuch aus  dem Keller zu holen  und wollen den ZX81-Emulator  jetzt einfach
  332. direkt ausprobieren? Na gut.
  333.  
  334. Nach dem  Starten des Emulators  und Drücken des  Knopfes "GO ZX81"  sehen Sie
  335. erst einmal eine kleine  Weile gar nichts, weil der ZX81  ja erstmal einen or-
  336. dentlichen Reset  durchführen und  alles initialisieren muß.  Danach erscheint
  337. links unten ein invertiertes K, welches den Eingabe-Cursor darstellt. Der ZX81
  338. wartet also nun auf Ihre Eingabe. Der Buchstabe K bedeutet, daß genauer gesagt
  339. auf ein  BASIC-Kommando gewartet wird.  Beim ZX81  muß man nun  nicht mühselig
  340. LOAD oder  LIST Buchstabe für  Buchstabe eingeben,  sondern es genügt  ein Ta-
  341. stendruck. Meist ist es der Anfangsbuchstabe des Kommandos, oder eine Taste in
  342. der Nähe  davon. Im Falle von  LOAD ist es die  Taste "J". Man kann  dies aber
  343. jederzeit nach  Druck auf  die Help-Taste  selbst herausfinden.  Versuchen Sie
  344. also mal, das Programm  "Crazy Kong" mit dem Befehl LOAD  "KONG" zu laden. Sie
  345. tippen ein "J", daraufhin erscheint das  Kommando LOAD und der Cursor wechselt
  346. von einem  invertierten K zu einem  invertierten L. Damit wird  angezeigt, daß
  347. der ZX81 nun auf die Parameter  des Kommandos wartet, also auf das "KONG". Die
  348. beiden Gänsefüßchen erreichen sie entweder  mit der Kombination Shift-"P" (wie
  349. beim ZX81) oder,  wenn Sie dabei noch Alternate gedrückt  halten oder CapsLock
  350. aktiviert haben, mit  der Kombination Shift-"2" (wie beim  Atari). Noch einfa-
  351. cher kann man die Gänsefüßchen mit  der Hochkomma-Taste erreichen, denn da der
  352. ZX81 kein Hochkomma  hatte, ist es im Emulator kurzerhand  durch die Gänsefüß-
  353. chen ersetzt worden. Wenn Sie sich  vertippt haben, können Sie die Eingabe je-
  354. derzeit mit den  Cursortasten und Backspace korrigieren. Das  geht alles etwas
  355. schwerfällig, weil der ZX81 keinen Tastaturpuffer  hatte, aber so war das eben
  356. damals. Zum Schluß drücken Sie die Return-Taste, die der Taste "NEW LINE" beim
  357. ZX81 entspricht und  das LOAD-Kommando ausführt. Falls sich  auf dem Datei-Zu-
  358. griffspfad, mit dem  der Emulator gestartet wurde, nun  das Programm "KONG.81"
  359. befindet, und  das sollte  eigentlich so  sein, erhalten  Sie die  Rückmeldung
  360. "0/0", die bedeutet, daß das LOAD-Programm ordnungsgemäß ausgeführt wurde. Die
  361. erste Null  steht für "OK",  und die zweite für  Programmzeile 0, das  ist die
  362. Zeile für Direkt-Eingabe, in der Sie  gerade getippt haben. Andernfalls erhal-
  363. ten Sie  etwa die Fehlermeldung "E/0".  In diesem Fall können  Sie z.B. versu-
  364. chen, das Programm "Crazy  Kong" mit dem Kommando LOAD ""  über die Datei-Aus-
  365. wahlbox des  TOS zu suchen. Einige  Programme starten sich nach  dem Laden von
  366. selbst. Da dies bei "KONG" offensichtlich  nicht der Fall ist, müssen Sie noch
  367. den Befehl RUN eingeben, was mit einem  Druck auf die Taste "R" getan ist, und
  368. ihn mit  der Return-Taste ausführen lassen.  Ich habe das Programm  "KONG" ge-
  369. wählt, weil  es eine  kurze Erklärung anzeigt,  was bei  ZX81-Programmen sonst
  370. meist nicht der Fall ist. Man kann das Programm übrigens auch mit dem Joystick
  371. in Port 2 bedienen. Nur die Leertaste darf man nicht drücken, denn das bewirkt
  372. beim ZX81 ein BREAK, also einen Abbruch des laufenden Programms.
  373.  
  374.  
  375. Das leidige Thema
  376. ~~~~~~~~~~~~~~~~~ 
  377. Dies ist normalerweise das Thema "Shareware-Gebühr". Aber hier haben Sie Glück
  378. gehabt. Der  ZX81-Emulator ist völlig umsonst,  "für lau", wie man  bei mir zu
  379. Hause sagt, "für umme",  wie man hier in Heidelberg sagt  oder "Freeware", wie
  380. der Computerfreak sagt. Sie  dürfen ihn, soweit Sie dies privat  und nicht auf
  381. kommerzieller Basis  betreiben, nach  Belieben weiterkopieren. Das  setzt aber
  382. voraus, daß  Sie alle dazugehörigen  Dateien, also  den Emulator an  sich, die
  383. Anleitungstexte und auch die ZX81-Programme nicht ändern. Sie können natürlich
  384. nach Belieben Texte oder Programme hinzufügen,  aber bitte lassen Sie die vor-
  385. handenen Dateien so, wie sie sind. Vorsorglich weise ich an dieser Stelle auch
  386. darauf hin,  daß das Copyright  der im ZX81-Emulator  eingebauten ROM-Software
  387. wahrscheinlich bei  Amstrad, auf jeden Fall  nicht bei mir liegt,  und daß ich
  388. irgendwelche  Copyright-Verletzungen beim  Kopieren  des  Emulators nicht  auf
  389. meine Kappe nehme. Ich denke aber, das sollte heute kein Thema mehr sein.
  390.  
  391. Mit PD-Versendern und anderen Anbietern, die PD- bzw. Freeware verkaufen, habe
  392. ich bisher leider nur schlechte Erfahrungen gemacht. Oft werden veraltete oder
  393. fehlerhaft  kopierte Versionen  in  Umlauf gebracht,  der PD-Versand  verdient
  394. trotzdem daran,  aber der  arme Programmautor  muß die  ganzen Fehlermeldungen
  395. beantworten. PD-Versender  und sonstige kommerzielle Anbieter  bitte ich also,
  396. mich von der  Aufnahme meiner Programme in ihr Angebot  zu benachrichtigen und
  397. eine Sonderspende locker zu machen. Meine Anschrift:
  398.  
  399.             Christoph Zwerschke
  400.             Am Steinfeld 4, D-59379 Selm-Cappenberg, Germany
  401.  
  402.  
  403. Häufig gestellte Fragen
  404. ~~~~~~~~~~~~~~~~~~~~~~~ 
  405. Erfahrungsgemäß wurden einige Fragen  zum ZX81-Emulator immer wieder gestellt,
  406. weswegen ich versuche, sie hier direkt in der Anleitung zu beantworten:
  407.  
  408. F: Gibt es noch andere ZX81-Freaks außer mir?
  409. A: Die  gibt es  in der  Tat immer  noch, z.B.  im "ZX-Team",  das sogar  eine
  410.    regelmäßige  Zeitschrift  namens  "ZX-TEAM-Magazin"  herausgibt.  Hier  die
  411.    Kontaktadresse für das "ZX-Team":
  412.  
  413.             Joachim Merkl
  414.             Bernbacher Str. 12, D-90768 Fürth, Germany
  415.  
  416. F: Wie bekomme ich meine alten ZX81-Programme von Cassette auf Diskette?
  417. A: Das ist  wirklich ein  Problem. Ich hatte  seinerzeit bereits  ein Programm
  418.    namens  "ZX81-Utility"  geschrieben, mit  dem  man  die Programme  von  der
  419.    "Datasette" oder einem normalen Cassettenrecorder  über den Userport in den
  420.    Commodore 64  laden und dort auf  Diskette oder im C64-Format  auf Cassette
  421.    archivieren  konnte.  Deswegen hatte  ich  meine  ZX81-Programme schon  auf
  422.    Disketten für den  Commodore 64 und von  dort zum Atari ST war  es über die
  423.    RS232-Schnittstelle  nur  noch ein  "Katzensprung".  Das  Programm auf  dem
  424.    Commodore 64  konnte übrigens noch mehr,  z.B. die Programme  wieder zurück
  425.    zum ZX81 schicken,  saubere ZX81-Listings und HEX-Dumps  ausdrucken und die
  426.    Programme in C64-BASIC umwandeln. Es wurde damals in der Zeitschrift "Happy
  427.    Computer" abgedruckt.  Ich habe mir dann  natürlich auf dem Atari  ST nicht
  428.    noch einmal die gleiche Arbeit gemacht  und deswegen gibt es bis heute kein
  429.    brauchbares  Atari-Programm   dafür.  Ich  sehe  also   nur  folgende  drei
  430.    Möglichkeiten: Erstens, Sie organisieren sich  einen Commodore 64 oder 128,
  431.    das "ZX81-Utility" und verbinden den Commodore  irgendwie mit dem Atari ST,
  432.    zweitens,  Sie organisieren  sich  ein RS232-Interface  für  den ZX81  oder
  433.    verbinden  ihn  irgendwie anders  direkt  mit  dem  ST oder  drittens,  Sie
  434.    schreiben selbst  ein Programm  für den  Atari ST,  das Daten  von Cassette
  435.    laden kann. Vielleicht kann Ihnen dabei auch
  436.  
  437.             Thomas Busse
  438.             Mainzer Str. 29, D-42119 Wuppertal, Germany
  439.  
  440.    helfen, wenn Sie ihn freundlich fragen  und Rückporto beilegen, weil er mit
  441.    dem  Laden  und Speichern  von  ZX81-Cassetten  auf  dem Atari  ST  bereits
  442.    experimentiert hat.
  443.  
  444. F: Was ist mit HRG (High Resolution Graphic)?
  445. A: Dafür gab es so viele unterschiedliche Lösungen, einige rein softwaremäßig,
  446.    andere  mit   Hardwareunterstützung,  daß   der  Emulator   unmöglich  alle
  447.    berücksichtigen kann.  Dafür kann  man den  eingebauten Character-Generator
  448.    modifizieren und ihn an beliebige Adressen legen.
  449.  
  450. F: Was ist mit Sound?
  451. A: Hier gilt das  gleiche wie für die  vorige Frage. Ich glaube,  es gab sogar
  452.    eine  Zusatzhardware mit  dem  gleichen Soundchip,  wie  ihn  der Atari  ST
  453.    eingebaut hat, die müßte natürlich sehr einfach zu emulieren sein. Ich habe
  454.    aber keine Unterlagen und Software dafür.
  455.  
  456. F: Kann  man  auch  andere  ROMs als  das  8K-BASIC-ROM  verwenden,  z.B.  das
  457.    ASZMIC-ROM oder das INTEGER-BASIC, FORTH, ASDIS?
  458. A: Ab der Version 2.0 des Emulators kann man Speicherblöcke laden, z.B. in den
  459.    Bereich $2000-$4000.  Nur werden die  meisten Zusatz- oder  gar Ersatz-ROMs
  460.    nicht  laufen,  weil  sie  oft  HRG  oder  einen  anderen  Bildschirmaufbau
  461.    verwenden, eigene  LOAD/SAVE-Routinen haben, die  auf dem Atari  nicht mehr
  462.    funktionieren  können und  wegen  ähnlicher Probleme.  Aber  Sie können  ja
  463.    einfach mal experimentieren.
  464.  
  465. F: Warum werden bei den Joystick-Tasten die Buchstaben "Y" und "Z" vertauscht?
  466. A: Die Joystick-Tasten beziehen sich auf die ZX81-Tastatur,  bei der gegenüber
  467.    einer deutschen Atari-Tastatur die Tasten Y und Z vertauscht sind.
  468.  
  469. F: Warum wird bei  mir regelmäßig ein bestimmter Buchstabe  auf den Bildschirm
  470.    geschrieben, obwohl ich nicht auf die Tastatur drücke?
  471. A: Entweder kommt der ZX81-Emulator nicht  mit Ihrer TOS-Version zurecht, oder
  472.    Sie haben eine Hardware am Joystick-Port  2 angeschlossen, zum Beispiel ein
  473.    Uhren-Modul. Löschen Sie  dann einfach die Tasten für den  Joystick mit der
  474.    Emulator-Kontrollbox.
  475.  
  476. F: Gibt es auch schon einen ZX-Spectrum-Emulator?
  477. A: Ich habe sehr viele Anfragen bekommen, ob ich nicht auch einen Emulator für
  478.    den ZX-Spectrum schreiben wollte. Aber weil ich, wie bereits lang und breit
  479.    erzählt, seinerzeit den Commodore 64 dem ZX-Spectrum vorgezogen habe, kenne
  480.    ich mich  mit dem "Speccy"  nicht so gut aus  und die Motivation  dafür war
  481.    auch einfach nicht da. Außerdem war  der ZX81-Emulator wirklich schon genug
  482.    Arbeit, weshalb  ich zu  einem ZX-Spectrum-Emulator nicht  überredet werden
  483.    konnte. Das war aber auch gut so, denn es gibt inzwischen (mindestens) drei
  484.    verschiedene ZX-Spectrum-Emulatoren, die anscheinend unabhängig voneinander
  485.    entstanden sind. Anfragen dazu richte man bitte an folgende Adressen:
  486.  
  487.             Jörg Tochtenhagen
  488.             Am Schlehdorn 12, D-50189 Elsdorf-Heppendorf, Germany
  489.  
  490.             Hansjörg Oppermann
  491.             Rennelbergstr. 15, D-38114 Braunschweig, Germany
  492.  
  493.             Christian Gandler
  494.             Paletzgasse 17/3/14, A-1160 Wien, Austria
  495.  
  496.    Alle drei  Programme sind  "Public Domain". Besonders  gut gefällt  mir der
  497.    ZX-Spectrum-Emulator von  Christian Gandler.  Bei Anfragen  aber bitte  den
  498.    frankierten Rückumschlag nicht vergessen.
  499.  
  500. F: Und was ist mit einem Emulator für den Sinclair QL?
  501. A: Den  Sinclair QL  kenne  ich nur  vom  Hörensagen. Aber  ich  weiß, daß  es
  502.    (mindestens) einen Sinclair-QL-Emulator gibt. Der benötigt aber zusätzliche
  503.    Hardware und ist nicht "Public Domain". Informationen dazu gibt es bei:
  504.  
  505.             Jochen Merz
  506.             Im Stillen Winkel 12, D-47169 Duisburg 11, Germany
  507.  
  508. F: Wann hört diese Anleitung endlich auf?
  509. A: Wir haben es bald geschafft, jetzt kommt nur noch der Anhang.
  510.  
  511.  
  512. Anhang: Kurzanleitung zu einigen ZX81-Programmen 
  513. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
  514. Nochmal die Bemerkung: ZX81-Programme zeichnen sich  dadurch aus, daß sie ohne
  515. Anleitung erscheinen. Die mitgelieferten  Programme funktionieren alle mit dem
  516. Emulator. Die Aufforderung  "Press any key to continue" sollte  man aber nicht
  517. ganz wörtlich nehmen,  denn die Leertaste bewirkt beim ZX81  einen Abbruch des
  518. laufenden Programms.
  519.  
  520. Disassembler DISASSEM.81
  521. ------------------------ 
  522. Der Disassembler befindet  sich in den oberen 1,7 kByte  des 16K-Speichers und
  523. ist vor NEW  geschützt. Sie können auch beliebig andere  Programme laden, ohne
  524. daß er gelöscht wird.  Nach dem Laden erscheint das berühmte  "Press any key".
  525. Wenn Sie jetzt  eine Taste außer der Leertaste drücken,  wird der Disassembler
  526. automatisch oberhalb RAMTOP  geladen und ein NEW  ausgeführt. Die Startadresse
  527. zum disassemblieren  muß mit POKE in  die Adressen 32704 (Low-Byte)  und 32705
  528. (High-Byte) geschrieben  werden. Danach kann mit  RAND USR 32032  jeweils eine
  529. neue Bildschirmseite lang  disassembliert werden. Wollen Sie  zum Beispiel die
  530. Zeichen-Ausgabe-Routine im 8K-BASIC-ROM bei  $07F1 untersuchen, dann geben Sie
  531. ein: POKE 32704,241 (=$F1) und POKE  32705,7 (=$07) und danach RAND USR 32032.
  532. Wenn Sie die nächste  Seite sehen wollen, brauchen Sie jetzt  nur nochmal RAND
  533. USR 32032 einzugeben.
  534.  
  535. Assembler ASSEMBLE.81
  536. --------------------- 
  537. Der Assembler befindet sich in den  oberen 2,6 kByte des 16K-Speichers und ist
  538. vor NEW  geschützt. Er versteht die  Standard ZILOG-Mnemonics. Sie  werden wie
  539. ein  BASIC-Programm in  REM-Zeilen  eingegeben. Innerhalb  einer Zeile  können
  540. mehrere Assemblerbefehle stehen,  wenn sie durch ein  Semikolon getrennt sind.
  541. Der Assembler unterscheidet  zwischen Konstanten und Labels.  Sie bestehen aus
  542. Buchstaben  und Ziffern  (Leerzeichen ignoriert),  das erste  Zeichen muß  ein
  543. Buchstabe sein, die Länge ist beliebig.  Labels werden durch einen Doppelpunkt
  544. hinter dem  Label gekennzeichnet. Als  Operatoren sind "", $,  +, -, >,  und <
  545. erlaubt.  >  und  <  stehen  hinter einem  numerischen  Wert  und  bilden  das
  546. höherwertige bzw. niederwertige Byte.
  547.  
  548.  Pseudo-Befehle:
  549.  
  550.  ORG a1,a2        Das Programm wird ab der Adresse a1 in den Speicher ge-
  551.                   schrieben. Es wird dabei so assembliert, als ob es bei
  552.                   der Adresse a2 stünde. Fehlt a2, wird a2=a1 angenommen.
  553.  BEGIN            Zeigt den Beginn des Assembler-Programms an.
  554.  END              Zeigt das Ende des Assembler-Programms an.
  555.  DEF              Bindet die folgende durch Leerzeichen getrennte Liste
  556.                   von Termen in das Assembler-Programm ein.
  557.  =                Weist einer Konstanten einen 16bit-Wert zu.
  558.  *                Die folgenden Zeichen werden als Kommentar aufgefaßt.
  559.  
  560.  Fehlermeldungen:
  561.  1    Kein Programm oder kein BEGIN
  562.  2    Syntax Error oder Bereichsüberschreitung
  563.  3    relativer Sprung zu weit
  564.  4    Konstante zweimal definiert
  565.  5    Label zweimal definiert
  566.  6    Fehler in einer DEF-Anweisung
  567.  
  568. Der Assembler  wird mit  dem Befehl PRINT  USR 30195  gestartet. Normalerweise
  569. wird der Code in eine REM-Zeile am Anfang des BASIC-Speichers assembliert. Mit
  570. PRINT USR 30113  kann dann zum Löschen des Quellprogramms  die momentane Zeile
  571. bis zu der Zeile mit dem END-Befehl verlängert werden.
  572.  
  573. Ein Beispiel: Angenommen,  Sie wollen das Programm  ASSDEMO1 assemblieren, das
  574. dem Emulator beiliegt (es malt einfach  den Bildschirm voller A's). Dann laden
  575. Sie  natürlich zuerst  ASSEMBLE.  Der Assembler  ist  nun  resident im  oberen
  576. Speicherbereich. Laden Sie dann ASSDEMO1 (oder tippen Sie ein eigenes Programm
  577. ein). Die Zeile 10  bewirkt, daß ab Adresse 25000 assembliert  wird. Rufen Sie
  578. den Assembler  mit PRINT USR 30195  auf. Das Programm ist  nun assembliert und
  579. kann testweise mit RAND USR 25000 aufgerufen werden. Wenn man den Code nun wie
  580. ein BASIC-Programm  speichern will, muß man  ihn in eine  REM-Zeile schreiben.
  581. Nach dem Assemblieren erscheint  die Zahl 18. Das bedeutet, daß  der Code eine
  582. Länge von  18 Bytes hat. Geben  Sie also eine  Zeile 1 ein, die  mindestens 18
  583. Bytes lang ist, also  z.B. einfach aus REM und 18  Punkten besteht. Ändern Sie
  584. nun ORG 25000 in Zeile 10 um in  ORG 16514, das ist die Startadresse der Zeile
  585. 1. Starten Sie den Assembler wieder mit PRINT USR 30195. Der Code steht nun in
  586. der REM-Zeile 1 und  erscheint beim Auflisten als wirre Folge  von Zeichen. Er
  587. kann mit RAND  USR 16514 aufgerufen werden. Ist das  Programm fehlerfrei, dann
  588. kann  der Quelltext  gelöscht werden,  da er  nicht mehr  gebraucht wird  (man
  589. sollte ihn natürlich  trotzdem vorher mit SAVE speichern). Er  kann z.B. durch
  590. die Zeile 10 LET L=USR 16514 ersetzt werden. Damit das Löschen des Quelltextes
  591. nicht  so  mühsam ist,  habe  ich  eine  kleine Zusatzfunktion  zum  Assembler
  592. hinzugefügt: Tippen Sie LIST 10 und dann PRINT USR 30113. Nun ist die Zeile 10
  593. effektiv bis zur  letzten END-Zeile 160 verlängert worden. Dies  kann man zwar
  594. nicht sehen, aber wenn man einfach  eintippt 10 NEW LINE, dann ist der gesamte
  595. Quelltext gelöscht,  und man hat nur  noch die Zeile  1 mit dem Code,  die man
  596. dann zusammen  mit der  Zeile 10  LET L=USR 16514  als lauffähiges  und kurzes
  597. Programm speichern kann.
  598.  
  599. Basic-Compiler ZX_GT.81
  600. ----------------------- 
  601. ZX GT ist ein schneller  BASIC-Compiler, der allerdings auf Integer-Arithmetik
  602. beschränkt ist.  Er wird  mit PRINT  USR 17389  aufgerufen, wenn  der Code  in
  603. REM-Zeile 2  geschrieben werden soll, sonst  PRINT USR 17381.  Ausgeführt wird
  604. das compilierte Programm dann mit PRINT USR 18823.
  605.  
  606. Mit dem ZX_GT  kenne ich mich auch  nicht so gut aus. Dieser  Compiler war ein
  607. Projekt in einem  englischen Computermagazin. Ich habe  ihn daraus eingetippt,
  608. weiß aber  gar nicht  mehr, welche Zeitschrift  das war  und ob es  die letzte
  609. Ausbaustufe war. Einige  Befehle funktionieren mit dem Compiler  nicht, und er
  610. kann nur mit ganzen Zahlen rechnen. Wieder ein kurzes Beispiel:
  611.  
  612. Zuerst wird ZX_GT geladen. Dann gibt man das BASIC-Programm ein, z.B.
  613.  
  614.       10 LET I=1, 20 PRINT I, 30 LET I=I+1, 40 GOTO 20, 50 STOP.
  615.  
  616. Leider wird bei der Eingabe immer  nur die Zeile 0 aufgelistet, ich weiß nicht
  617. ob das  so sein  muß oder  ob man das  ändern kann.  Danach speichert  man das
  618. Programm sicherheitshalber  ab und  tippt dann PRINT  USR 17389.  Das Programm
  619. wird nun  in zwei  Durchläufen kompiliert. Zum  Scrollen eine  beliebige Taste
  620. drücken (es  erscheint ein  Fragezeichen). Der  Compiler hat  nun die  ominöse
  621. Zeile 2 fabriziert und dort das  kompilierte Programm gespeichert. Man kann es
  622. mit PRINT USR 18823 aufrufen. Funktioniert alles, dann kann man eigentlich das
  623. gesamte BASIC-Programm durch eine Zeile 10 PRINT USR 18823 ersetzen.
  624.  
  625. Der Compiler hat zumindest in der Version, die ich abgetippt habe, anscheinend
  626. einige Tücken,  stürzt häufiger  ab, oder  bringt die  Tastatur durcheinander.
  627. Manchmal hilft ein "ZX81 Break" in der Emulator-Kontrollbox.
  628.  
  629.  
  630. Das Ende der Anleitung
  631. ~~~~~~~~~~~~~~~~~~~~~~ 
  632. So, das  war's eigentlich. Um den  ZX81-Emulator richtig einsetzen  zu können,
  633. braucht  man  natürlich noch  das  ZX81-Handbuch.  Das  war, soweit  ich  mich
  634. erinnern kann,  wirklich sehr  gut gemacht,  und man  konnte damit  sehr schön
  635. BASIC und Programmieren  überhaupt daraus lernen. Auch das  ZX81-BASIC an sich
  636. war in vielen Punkten auch gar nicht so schlecht, zum Beispiel unterstützte es
  637. beliebig lange Variablen- und Dateinamen, worauf man erst heute wieder langsam
  638. zurückkommt. Es  hatte auch viel  mehr mathematische Funktionen  eingebaut als
  639. bei  anderen BASICs  üblich.  Das nur  als Tip,  falls  Sie das  ZX81-Handbuch
  640. irgendwo  bekommen können  oder  noch selber  haben  und  jemand BASIC  lernen
  641. möchte. Mit der ZX81-Emulation auf dem  Atari gibt es ja jetzt auch nicht mehr
  642. die Probleme  mit der  Folientastatur und  dem Cassetteninterface  und anderen
  643. Widrigkeiten des ZX81. Damals hätte ein ZX81-Benutzer nicht zu träumen gewagt,
  644. daß  er an  seinen Rechner  einmal  eine "normale"  Tastatur, einen  Joystick,
  645. Floppylaufwerke, Festplatten, RAM-Disks, Wechselplatten, einen 19-Zoll-Monitor
  646. usw. anschließen könnte.
  647.  
  648. Tja, aber so sind wir Computerfreaks (oder Menschen allgemein) nun mal. Zuerst
  649. wünschen  wir uns  das  Zeug sehnlichst  herbei  und dann  ist  es auf  einmal
  650. selbstverständlich  und wir  wollen noch  mehr.  Aber bevor  ich nun  anfange,
  651. darüber weiter zu philosophieren, verabschiede ich mich und wünsche Ihnen viel
  652. Spaß mit dem ZX81-Emulator.
  653.  
  654.             Christoph Zwerschke                                  18. Juni 1993
  655.  
  656.